home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / AMIGA / AMICUS / AMICUS11.ADF / AmigaBasicProgs / Optimization / Shuffle.MSB (.txt) < prev    next >
AmigaBASIC Source Code  |  1986-08-05  |  1KB  |  77 lines

  1. '
  2. ' Optimizing Your AmigaBasic Programs for Speed
  3. '
  4. ' Stephen R. Pietrowicz
  5. '
  6. ' Listing 2 - Card Shuffling example
  7. '
  8. DIM card$(52), Shuffled$(52), Check(52) 
  9. DIM Spot$(4)
  10.  
  11. Spot$(0) = " of clubs"
  12. Spot$(1) = " of spades"
  13. Spot$(2) = " of diamonds"
  14. Spot$(3) = " of hearts"
  15. DATA "ace","two","three","four","five","six","seven"
  16. DATA "eight","nine","ten","jack","queen","king"
  17.  
  18. Main:
  19. RANDOMIZE TIMER
  20. '
  21. ' ShuffleA
  22. '
  23. PRINT "Shuffling...."
  24. a1$ = TIME$
  25.    FOR S = 1 TO 10
  26.    
  27.       RESTORE
  28.       GOSUB Init
  29.     
  30.       FOR I = 1 TO 52
  31.          Check(I) = 0
  32.       NEXT I
  33.  
  34.       FOR I = 1 TO 52
  35. Again:
  36.          X = INT(RND*52+1)
  37.          IF (Check(X) = 1) GOTO Again
  38.          Shuffled$(I) = card$(X)
  39.          Check(X) = 1
  40.       NEXT I
  41.       
  42.    NEXT S
  43. a2$ = TIME$
  44. PRINT "ShuffleA -- Start: ";a1$;" End ";a2$ 
  45. '
  46. ' Shuffle B
  47. '
  48. PRINT "Shuffling...."
  49. b1$ = TIME$
  50.  
  51.    FOR S = 1 TO 10
  52.  
  53.       RESTORE
  54.       GOSUB Init
  55.       
  56.       FOR I = 1 TO 52
  57.          X = INT(RND*52+1)
  58.         SWAP card$(I),card$(X)
  59.       NEXT I
  60.       
  61.    NEXT S
  62.    
  63. b2$ = TIME$
  64. PRINT "ShuffleB -- Start: ";b1$;" End ";b2$ 
  65. END
  66.  
  67. Init:
  68. X = 1
  69. FOR J = 1 TO 13
  70.    READ A$
  71.    FOR I = 0 TO 3
  72.        card$(X) =A$+Spot$(I)
  73.        X = X + 1
  74.    NEXT I
  75. NEXT J
  76. RETURN
  77.